gsk: Add the ability to create fallback renderers
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 25 Aug 2016 10:31:56 +0000 (11:31 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 18 Oct 2016 10:49:16 +0000 (11:49 +0100)
commitdace0791a9bab4a5d1a69e4bde87973814ca217a
treebcf8e20b5813fdf1ed613ec1d3a13682a20786d5
parenta9bbb020aac9f20d7366b29219ada2e77349642a
gsk: Add the ability to create fallback renderers

While porting GTK to GskRenderer we noticed that the current fallback
code for widgets using Cairo to draw is not enough to cover all the
possible cases.

For instance, if a container widget still uses GtkWidget::draw to render
its children, and at least one of them has been ported to using render
nodes instead, the container won't know how to draw it.

For this reason we want to provide to layers above GSK the ability to
create a "fallback" renderer instance, created using a "parent"
GskRenderer instance, but using a Cairo context as the rendering target
instead of a GdkDrawingContext.

GTK will use this inside the gtk_widget_draw() implementation, if a
widget implements GtkWidgetClass.get_render_node().
gsk/gskcairorenderer.c
gsk/gskglrenderer.c
gsk/gskrenderer.c
gsk/gskrenderer.h
gsk/gskrendererprivate.h
gtk/gtkwidget.c